package com.cypher.encryptionanddecryption.watcher;

import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

/**
 * 控制输入框小数点位数
 */
public class DecimalDigitsWatcher implements TextWatcher {
    private EditText editText;
    /**
     * 小数点后面的位数
     */
    private int digits;
    public DecimalDigitsWatcher(EditText editText, int digits) {
        this.editText = editText;
        this.digits = digits;
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String content = s.toString();
        if (content.contains(".")) {
            // 小数点后面的位数
            if (s.length() - 1 - content.indexOf(".") > digits) {
                // 如果输入过多，光标停留在第(digits + 1)位，
                s = content.subSequence(0, content.indexOf(".") + digits + 1);
                editText.setText(s);
                editText.setSelection(s.length());
            }
        }
        // 如果直接输入.，就会显示0.
        if (content.trim().substring(0).equals(".")) {
            s = "0" + s;
            editText.setText(s);
            editText.setSelection(2);
        }
        // 如果第一位是0，那么第二位只能是.，再输入0的话，不能输入
        if (content.startsWith("0") && content.trim().length() > 1) {
            if (!s.toString().substring(1, 2).equals(".")) {
                editText.setText(s.subSequence(0, 1));
                editText.setSelection(1);
                return;
            }
        }
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
}
